package cn.psvmc.cxzapi.mapper.customer;

import cn.psvmc.cxzapi.config.mybatisplus.mapper.MyBaseMapper;
import cn.psvmc.cxzapi.model.common.GoodsSpecsEntity;
import cn.psvmc.cxzapi.model.common.SearchEntity;
import cn.psvmc.cxzapi.model.customer.TCustomerCoupon;
import cn.psvmc.cxzapi.model.customer.TCustomerCouponVo;
import cn.psvmc.cxzapi.model.store.TCoupon;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 客户优惠券表 Mapper 接口
 * @Author auto
 * @Date 2024-08-15
 */
public interface TCustomerCouponMapper extends MyBaseMapper<TCustomerCoupon> {
    //领券中心
    IPage<Map> listAll(Page<TCustomerCoupon> iPage, @Param("entity") SearchEntity entity);

    //我的优惠券列表
    IPage<Map> listMy(Page<TCustomerCoupon> iPage, @Param("entity") SearchEntity entity);

    //客户领取优惠券数量
    TCustomerCouponVo getNumById(@Param("cc") TCustomerCoupon tCustomerCoupon);

    //客户可领商品券列表
    List<Map> listGoodsCoupon(@Param("customerId") Integer customerId, @Param("goodsId") Integer goodsId, @Param("type") String type);

    //客户已领商品券列表
    List<TCoupon> listCustomerCoupon(@Param("customerId") Integer customerId, @Param("goodsId") Integer goodsId
            , @Param("orderScope") Integer orderScope);

    //商品规格优惠券列表
    List<Map> listSpecsCoupon(@Param("entity") GoodsSpecsEntity entity);

    //使用优惠券
    void useCoupon(@Param("couponid") Integer couponid, @Param("customerId") Integer customerId);

    //取消订单的优惠券
    void cancelCoupon(@Param("couponid") Integer couponid, @Param("customerid") Integer customerid, @Param("now") LocalDateTime now);
}
